package dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
import modelo.Corretiva;
import java.sql.ResultSet;
import util.DBUtil;

public class CorretivaDAO {
	
	private Connection con;
	private int res; 
	private static CorretivaDAO instancia;

	private CorretivaDAO(){
		con = DBUtil.getConnection();
	}
	
	public static CorretivaDAO getInstancia(){
		if (instancia == null){
			instancia = new CorretivaDAO();
		}
		
		return instancia;
	}
	
	public boolean inserir(Corretiva novaCorretiva){
			try {
				Statement st = con.createStatement();
				String sql = "insert into manutencao (cod, tipo, " +
						"datainicial, datafinal, horainicial, horafinal," +
						"tagequip, resptecnico) values " +
						"('"+novaCorretiva.getCodManutencao()+"'," +
						"'"+novaCorretiva.getTipoManut()+"'," +
						"'"+novaCorretiva.getDataInicial()+"'," +
						"'"+novaCorretiva.getDataFinal()+"'," +
						"'"+novaCorretiva.getHoraInicial()+"'," +
						"'"+novaCorretiva.getHoraFinal()+"'," +
						"'"+novaCorretiva.getTagEquip()+"'," +
						"'"+novaCorretiva.getRespTecnico()+"')";
				System.out.println(sql);
				res = st.executeUpdate(sql);
							
				//Statement 
				st = con.createStatement();
				//String 
				sql = "insert into corretiva (codmanut, codcorret, " +
						"codfalha, descrfalha, servico) values " +
						"('"+novaCorretiva.getCodManutencao()+"'," +
						"'"+novaCorretiva.getCodCorret()+"'," +
						"'"+novaCorretiva.getCodFalha()+"'," +
						"'"+novaCorretiva.getDescrFalha()+"'," +
						"'"+novaCorretiva.getServico()+"')";
				System.out.println(sql);
				res = st.executeUpdate(sql);
				
				if(res==0)
					return false;
				else
					return true;
								
			} catch (SQLException er) {
				// TODO Auto-generated catch block
				er.printStackTrace();
			}
			return false;
	}

	public Corretiva buscar (Corretiva corretiva){

		try {
			Corretiva c = new Corretiva();
			
			// preparar o statement
			String sql = "select * from manutencao where cod = ? ";
			PreparedStatement comandoSql = con.prepareStatement(sql);
			comandoSql.setString(1,corretiva.getCodManutencao());
	
			ResultSet resultado = comandoSql.executeQuery();

			if(resultado.next()){
				c.setTipoManut(resultado.getString("tipo"));
				c.setDataInicial(resultado.getDate("datainicial"));
				c.setDataFinal(resultado.getDate("datafinal"));
				c.setHoraInicial(resultado.getString("horainicial"));
				c.setHoraFinal(resultado.getString("horafinal"));
				c.setTagEquip(resultado.getString("tagequip"));
				c.setRespTecnico(Integer.valueOf(resultado.getString("resptecnico")));
			
				// preparar o statement
				//String 
				sql = "select * from corretiva where codmanut = ?";
				//PreparedStatement 
				comandoSql = con.prepareStatement(sql);
				comandoSql.setString(1,corretiva.getCodManutencao());
	
				//ResultSet 
				resultado = comandoSql.executeQuery();
				//System.out.println("cod manut: " + corretiva.getCodManutencao());		
				if(resultado.next()){
					c.setCodManutencao(resultado.getString("codmanut"));
					c.setCodCorret(resultado.getString("codcorret"));
					c.setCodFalha(resultado.getString("codfalha"));
					c.setDescrFalha(resultado.getString("descrfalha"));
					c.setServico(resultado.getString("servico"));
					return c;
				}
			}
		}
		catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		return null;
	}
	
	public boolean excluir(Corretiva corretiva) {
		// TODO Auto-generated method stub
		String	sql	=	"delete from manutencao where cod = ?";
		try{
			PreparedStatement comandoSql = con.prepareStatement(sql);
			comandoSql.setString(1, corretiva.getCodManutencao());
			int res = comandoSql.executeUpdate(); 
			if(res==0)
				return false;
			else{
				sql = "delete from corretiva where codcorret = ?";
		
				try {
					//PreparedStatement 
					comandoSql = con.prepareStatement(sql);
					comandoSql.setString(1, corretiva.getCodCorret());
					int cont = comandoSql.executeUpdate();
					if(cont==0)
						return false;
					else
						return true;
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
	}

	public boolean alterar(Corretiva corretiva) {
		String sql = "update manutencao set tipo = " + 
			"'"+corretiva.getTipoManut()+"'," +
			"datainicial = " + "'"+corretiva.getDataInicial()+"'," +
			"datafinal = " + "'"+corretiva.getDataFinal()+"'," +
			"horainicial = " + "'"+corretiva.getHoraInicial()+"'," +  
			"horafinal = " + "'"+corretiva.getHoraFinal()+"'," +
			"tagequip = " + "'"+corretiva.getTagEquip()+"'," +
			"resptecnico = " + "'"+corretiva.getRespTecnico()+"'" +
			"where cod = ?";
		try{
			PreparedStatement comandoSql = con.prepareStatement(sql);
			comandoSql.setString(1, corretiva.getCodManutencao());
			int res = comandoSql.executeUpdate();
			if (res==0)
				return false;
			else{	
				//String 
				sql = "update corretiva set codcorret = '" +
				corretiva.getCodCorret() +
				" ',codfalha = '" + corretiva.getCodFalha() +
				" ',descrfalha = '" + corretiva.getDescrFalha() +
				" ',servico = '" + corretiva.getServico() + " '" +
				" where codmanut = ?";
		
				try {
					//PreparedStatement 
					comandoSql = con.prepareStatement(sql);
					comandoSql.setString(1, corretiva.getCodManutencao());
					int cont = comandoSql.executeUpdate();
			
					if(cont==0){
						return false;
					}
					else{
						return true;
					}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
	}
}